package config

import (
	"log"

	"github.com/caarlos0/env/v6"
	"github.com/spf13/viper"
)

func GetConfigFromFile(etcPath string) (*Config, error) {
	viper.SetConfigName("config")
	viper.SetConfigType("toml")
	viper.AddConfigPath(etcPath)
	if err := viper.ReadInConfig(); err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			// 配置文件没有找到; 有默认值可以忽略
			log.Println("没有配置文件 读取默认值")
		} else {
			return nil, err
		}
	}
	// 解析配置文件到
	config := DefaultConfig()
	if err := viper.Unmarshal(config); err != nil {
		return nil, err
	}
	c = config
	return c, nil
}

func GetConfigFromEnv() (*Config, error) {

	// 解析配置文件到 对象总
	config := DefaultConfig()
	if err := env.Parse(config); err != nil {
		return nil, err
	}
	c = config
	return c, nil
}
